The present invention relates to dynamically configurable kernels incorporating various modules. It will be appreciated, however, that the invention is also amenable to other like applications.
One component of a computing system is an operating system (OS) kernel, which includes a plurality of modules (e.g., drivers) that allow the computing system to communicate with peripheral devices such as a printing device. The modules are compiled and subsequently linked to form the kernel. When the system is started or “booted-up,” the kernel is loaded into memory.
In some systems, the kernel is static, which means the kernel is built/re-built whenever a new module (or new version of a module) is linked (registered) to the operating system (OS) kernel. In other systems, the kernel is dynamic, which permits a new module (or new version of a module) to be linked to the operating system (OS) kernel without rebuilding the kernel or rebooting the system. In either system, it is necessary to manage modules linked to the kernel. In other words, it is necessary to maintain a list (index) of modules (or versions of modules) that are currently registered with the kernel, a list of modules (or versions of modules) that are not currently registered with the kernel but that are to be registered in the future, and a list of modules that are currently registered with the kernel but that are to be unregistered in the future.
Currently, one means for managing a kernel includes creating and/or accessing one or more registration files stored on a computer readable medium within a computing system. The registration files, which are typically text files, identify the modules that are currently registered with the kernel. Furthermore, the files may identify multiple versions of one or more of the modules that are currently registered with the kernel. Registering multiple versions of a module with a kernel simply means that the kernel is “aware” of each of those versions. Only one of the registered versions (e.g., the active version) is actually used by the kernel when a call is made to the module. The text files also identify modules (and versions thereof) that are currently not registered with the kernel but that are to be registered in the future, along with modules (and versions thereof) that are currently registered but that are to be unregistered in the future.
As discussed above, the registration files are typically text files and, furthermore, are “flat,” which means the entries in the files have no structured interrelationship. For example, a flat file used within the current system may simply include a list of file names (including the full path) representing the modules that are currently registered with the kernel. Other flat, text files in the current system may include file names of at least one of various versions of the modules that are currently registered with the kernel, modules and/or versions that are to be registered with the kernel in the future, and modules and/or versions that are to be unregistered from the kernel in the future.
Since a plurality of registration files are currently used for managing the kernel, the OS manages the location and name of each of these files. This additional layer of management is cumbersome and, furthermore, utilizes computer resources that may affect the efficiency of the system.
Additionally, there are drawbacks associated with text registration files. For example, the computing system must be sufficiently loaded to accomplish the relatively high-level processing used for text files (e.g., the system may be completely booted). Therefore, text registration files preclude boot-time loading. Furthermore, text files are typically accessible to system users and, therefore, may be easily corrupted and/or inadvertently deleted.
The present invention provides a new and improved apparatus and method which addresses the above-referenced problems.